Loading...
2023. 4. 3. 00:41

자바 HashMap - 개발자가 정의한 class를 key로 만드는 방법

자바의 HashMap은 파이썬의 dict처럼, 고유한 key와 대응하는 value를 하나의 쌍으로 하여, 저장하는 자료구조 일반적으로 key를 문자열, 정수값으로 사용하지만, 필요에 따라 특정한 class를 key로 하고 싶을 수 있다 시험에 아래와 같은 Point라는 클래스를 key로 하고 싶었는데... class Point { int x,y; public Point(int x, int y) { this.x = x; this.y = y; } } 이걸 HashMap의 key로 사용해서 자료를 관리해볼려 했는데.. 원하는대로 동작을 안하더라고? 그립습니다 파이썬님 자연스럽게 두 객체 p1, p가 같다는 것은 x,y가 서로 같다는 것인데.. 문제는 key로 사용한 p1의 주소와 get을 하면서 넣은 p의 주..

[Java]자바 HashMap 문제 풀면서 HashMap 이해력 높이기 1편

1. 매우 큰 범위의 배열이 필요할때 서로 다른 6개의 숫자가 주어진 뒤 끝에 숫자 k가 주어졌을 때, 숫자 k가 몇 번째로 주어졌는지를 판단하는 프로그램을 작성해보세요. 단, 주어지는 숫자의 범위는 -10^9 ~ 10^9 사이입니다. 예를 들어 [-656, 234, 65756344, 7678678, 123123, 567567567] 에서 k가 65756344라면, 3번째로 주어진 숫자이므로 답은 3이 됩니다. 이런 경우 -10^9에서 10^9을 모두 담는 배열을 선언하기에는 메모리가 부족하다 하지만 필요한 숫자는 6개밖에 안된다. 그래서 이럴때 필요한 자료구조가 HashMap HashMap은 (key,value)형태로 데이터를 저장하며, key의 범위는 정의하기 나름이고, 사용되는 메모리 공간이 전체 ..

자바 자료구조 우선순위 큐 심화응용 - 내가 원하는 우선순위에 맞는 우선순위 큐를 만드는 방법

1. 원하는 우선순위 기준에 맞는, 우선순위 큐 만들기 [(1, 7), (3, 2), (3, 1), (6, 2)] 와 같이 2차 평면상의 점들의 위치가 순서대로 주어졌을 때, 각각의 점의 위치가 주어질 때 마다 지금까지 주어진 점들 중 x, y의 곱이 가장 큰 경우를 출력하는 프로그램을 작성해보세요. 위와 같은 문제는 어떻게 해결할 수 있을까? 무작정 코드를 작성한다면 점의 위치가 주어질때마다, x*y를 계산하여 최대가 되는 경우를 골라야하므로, $O(N^{2})$이 된다. 하지만 PriorityQueue를 이용한다면 순간 최댓값을 찾는 과정이 O(logN)이 되어, 시간복잡도가 O(NlogN)이 된다. 그런데, 우선순위 큐를 어떻게 만들어야할까? 두 수의 곱이 최대가 되는 특별한 경우를 원하므로, 이..

자바에서 배열의 한 원소로 튜플을 활용하고 싶다면..

1. 문제 양의 정수를 원소로 갖는 길이가 N인 수열이 입력으로 주어졌을 때, 이 수열을 오름차순으로 정렬 했을 때 각각의 위치에 있던 원소가 어느 위치로 이동하는지 출력하는 코드를 작성 2. 풀이 배열을 정렬할때, 배열의 index도 동시에 움직여야하는데, 배열은 index랑 값을 동시에 활용할 수 없으니(동적 배열은 될 것 같기도하고...??) 배열의 값과 index를 동시에 가지는 새로운 클래스를 직접 정의하고 해당 클래스를 원소로 가지는 배열을 정렬하여 각 index가 정렬한 배열에서 어디에 위치하고 있는지 새로운 배열에 저장한 다음에 출력 import java.util.Scanner; import java.util.Arrays; class Tuple implements Comparable { i..

자바 초보부터 B형까지 - 다양한 기준으로 정렬하기 위한 객체정렬 배우기

1. custom comparator 국어, 영어, 수학 점수를 포함한 학생 5명의 정보가 주어질때, 국어 점수를 기준으로 오름차순 정렬하는 방법은? 자바에서는 custom comparator로 직접 만들어야한다 반환 타입이 반드시 int여야하며, 정렬을 위한 객체 class를 타입으로 하는 1개의 인자를 가지고 있어야한다. 정렬을 위한 객체 뒤에 implements Comparable을 붙이고 public int compareTo 함수를 해당 class 안에 override annotator와 함께 적어준다. class Student implements Comparable { int kor, eng, math; public Student(int kor, int eng, int math){ this.ko..

자바 초보부터 B형까지 - 자바에서 정렬을 하는 기본적인 방법들 -

1. Arrays.sort() import java.util.Arrays; Arrays.sort(arr)은 배열 arr을 오름차순 정렬 import java.util.Arrays; public class Main{ public static void main(String[] args){ int[] arr = new int[]{12,41,37,81,19,25,60,20}; Arrays.sort(arr); for(int i = 0; i < 8; i++){ System.out.print(arr[i] + " "); //12, 19, 20, 25, 37, 41, 60, 81 } } } 2. 부분정렬 특이하게 구간 인덱스를 명시하면 해당 구간만 정렬해줄 수도 있다 Arrays.sort(arr,시작 index, 끝 i..